#include <buola/mat.h>
#include <buola/mat/prettyprint.h>
#include <buola/mat/svd.h>
#include <buola/mat/traits_typename.h>

using namespace buola;

int main(int /*argc*/,char** argv)
{
    mat::CMat2d lMat1{1,2,3,4};
    mat::CMat2d lMat2{5,6,7,8};
    mat::CVec4d lVec1{9,10,11,12};
    mat::CVec4d lVec2{13,14,15,16};
    
    mat::CMat_d lResult;
    
    lResult=lMat1 >> lMat2 &
            lMat2 >> lMat1;
    msg_info() << "aaaaa\n";
    msg_info() << lResult;
    
    mat::CMat_d lResult2=lResult >> lResult & lResult >> lResult;
    msg_info() << lResult2;
    
    lResult2=lResult2>>(lVec1&lVec1);
    
    mat::CMat_d lResult3=lResult2>>(lVec1&lVec1);
    msg_info() << lResult3;
    
    lResult3.RemoveRow(2);
    msg_info() << lResult3 << "\n";
    lResult3.RemoveCol(5);
    msg_info() << lResult3 << "\n";

    mat::CMat_d lResult4=(lMat1 & lMat2) >> lVec1 >> lVec1;
    msg_info() << lResult4;
}